import { Button, Tooltip, TreeSelect, message } from 'antd';
import { DeleteOutlined, SearchOutlined, AppstoreAddOutlined } from '@ant-design/icons';
import { getKeyRouter, getSelectDataMapList, getTenantID, onMouseOutBtn, renderTableText, tableSorter, tooltipLength } from '@/utils';
import pageStyles from '@/common/pageLayout.less';
import { DictionaryRenderFun } from '../../Acommon';
import { formatDecimalFour } from '../../../Acommon';
import _ from 'lodash';
import { ILoadMapTypeAll } from '@/common';
import { history } from 'umi';

// 资产Table表格的配置
export const useOAAssetTableColumn = ({
  openAssetModalFun = null,
  delSelectRow = null,
  pageType,
  loadMapInfo,
  mapLoading,
  queryType = '2',
  storeTreeList = [],
  getStorageLoading = false,
  changeAssetItemStore,
  editState,
  changeEditAssetId,
  finish,
}: any) => {
  const isDetail: boolean = pageType == 'detail'; // 是否是查看

  const assetAreaList = getSelectDataMapList(loadMapInfo?.[`${getTenantID()}${ILoadMapTypeAll.ASSET_AREA}`], 'name', 'id', true);

  const columnConfig: any = [
    {
      title: '资产名称',
      dataIndex: 'assetName',
      key: 'assetName',
      fixed: 'left',
      width: 120,
      ellipsis: {
        showTitle: true,
      },
      visible: true,
      unDrag: true,
      render: (text: string, record: Record<string, any>) => {
        return (
          <Tooltip title={tooltipLength(text, 50)}>
            <span>{text || '--'}</span>
          </Tooltip>
        );
      },
    },
    {
      title: '资产分类',
      dataIndex: 'assetClassName',
      key: 'assetClassName',
      width: 120,
      ellipsis: {
        showTitle: true,
      },
      visible: true,
      unDrag: true,
      sorter: (a: any, b: any) => (a.assetClassName > b.assetClassName ? 1 : -1),
      render: (text: string) => DictionaryRenderFun({ text, isState: false }),
    },
    {
      title: '品牌',
      dataIndex: 'brandType',
      key: 'brandType',
      width: 120,
      visible: true,
      sorter: (a: any, b: any) => (a.brandType > b.brandType ? 1 : -1),
      render: (text: string) => DictionaryRenderFun({ text, isState: false }),
    },
    {
      title: '规格型号',
      dataIndex: 'paramsInfo',
      key: 'paramsInfo',
      width: 120,
      visible: true,
      sorter: (a: any, b: any) => (a.paramsInfo > b.paramsInfo ? 1 : -1),
      render: (text: string) => DictionaryRenderFun({ text, isState: false }),
    },
    {
      title: '状态',
      dataIndex: 'assetStateName',
      key: 'assetStateName',
      width: 110,
      visible: true,
      sorter: (a: any, b: any) => tableSorter(a, b, 'assetStateName'),
      render: (text: string) => renderTableText(text, true),
    },
    {
      title: '供应商',
      dataIndex: 'supplier',
      key: 'supplier',
      width: 150,
      // ishidden: (queryType == '2' ? true : false),
      visible: true,
      sorter: (a: any, b: any) => tableSorter(a, b, 'supplier'),
      render: (text: string) => renderTableText(text, true),
    },
    // {
    //   title: '所属仓库',
    //   dataIndex: 'assetStoreName',
    //   key: 'assetStoreName',
    //   width: 150,
    //   // ishidden: (queryType == '2' ? true : false),
    //   visible: true,
    //   sorter: (a: any, b: any) => tableSorter(a, b, 'assetStoreName'),
    //   render: (text: string) => renderTableText(text, true),
    // },
    {
      title: '数量',
      dataIndex: 'residueNum',
      key: 'residueNum',
      width: 120,
      visible: true,
      sorter: (a: any, b: any) => (a.residueNum > b.residueNum ? 1 : -1),
      render: (text: string, record) => {
        if (isDetail) {
          return (
            <Tooltip title={record?.expectNum + record?.quantityOrArea}>
              <div className={pageStyles['over-flow-hidden']}>{record?.expectNum + record?.quantityOrArea || '--'}</div>
            </Tooltip>
          );
        } else {
          return (
            <Tooltip title={text}>
              <div className={pageStyles['over-flow-hidden']}>{text || record?.expectNum + record?.quantityOrArea || record?.quantityOrArea || '--'}</div>
            </Tooltip>
          );
        }
      },
    },
    {
      title: '计量单位',
      dataIndex: 'unitOfMeasurementName',
      key: 'unitOfMeasurementName',
      width: 120,
      visible: true,
      sorter: (a: any, b: any) => (a.unitOfMeasurement > b.unitOfMeasurement ? 1 : -1),
      render: (text: string) => DictionaryRenderFun({ text, isState: false }),
    },
    {
      title: '资产原值（元）',
      dataIndex: 'totalValue',
      key: 'totalValue',
      width: 170,
      visible: true,
      sorter: (a: any, b: any) => (a.totalValue > b.totalValue ? 1 : -1),
      render: (text: string | number) => formatDecimalFour(text),
    },
    {
      title: '存放区域',
      dataIndex: 'locationName',
      key: 'locationName',
      width: 150,
      visible: true,
      sorter: (a: any, b: any) => (a.locationName > b.locationName ? 1 : -1),
      render: (text: number | null) => DictionaryRenderFun({ text, isState: false }),
    },
    {
      title: '详细地点',
      dataIndex: 'locationInfo',
      key: 'locationInfo',
      width: 180,
      visible: true,
      sorter: (a: any, b: any) => (a.locationInfo > b.locationInfo ? 1 : -1),
      render: (text: string) => {
        return (
          <Tooltip title={text}>
            <div className={pageStyles['over-flow-hidden']}>{text || '--'}</div>
          </Tooltip>
        );
      },
    },
    // {
    //   title: '领用数量',
    //   dataIndex: 'quantityOrArea',
    //   key: 'quantityOrArea',
    //   width: 130,
    //   fixed: 'right',
    //   sorter: (a: any, b: any) => tableSorter(a, b, 'quantityOrArea'),
    //   render: (text: string | number, record: Record<string, any>) => {
    //     return (
    //       <Tooltip title={text}>
    //         <div className={pageStyles['over-flow-hidden']}>{text || '--'}</div>
    //       </Tooltip>
    //     );
    //   },
    // },
  ];

  // if (queryType == '2') {
  //     columnConfig.push({
  //         title: '选择仓库',
  //         dataIndex: 'assetStoreId',
  //         key: 'assetStoreId',
  //         width: 220,
  //         visible: false,
  //         fixed: 'right',
  //         render: (text: string, record: Record<string, any>, index: number) => {
  //             return (
  //                 <TreeSelect
  //                     bordered={false}
  //                     loading={getStorageLoading}
  //                     placeholder="请选择"
  //                     treeData={storeTreeList}
  //                     fieldNames={{
  //                         label: 'storeName',
  //                         value: 'id',
  //                         children: 'children',
  //                     }}
  //                     value={text}
  //                     style={{ width: '100%' }}
  //                     showSearch={true}
  //                     treeNodeFilterProp={'text'}
  //                     allowClear={true}
  //                     disabled={isDetail}
  //                     onSelect={(value: any, node: any) => {
  //                         if (node.storeState == 1) {
  //                             changeAssetItemStore(index, node);
  //                         } else {
  //                             message.error('该仓库处于关闭状态，请选择其他仓库！');
  //                         }
  //                     }}
  //                 />
  //             );
  //         },
  //     });
  // }

  // if (queryType != '2') {
  //     columnConfig.push(
  //         {
  //             title: '存放区域',
  //             dataIndex: 'location',
  //             key: 'location',
  //             width: 220,
  //             visible: false,
  //             fixed: 'right',
  //             render: (text: string, record: Record<string, any>) => {
  //                 if (isDetail) {
  //                     return (
  //                         <Tooltip title={DictionaryRenderFun({ text: record?.locationName, isState: false })}>
  //                             <div className={pageStyles['over-flow-hidden']}>{DictionaryRenderFun({ text: record?.locationName, isState: false }) || '--'}</div>
  //                         </Tooltip>
  //                     );
  //                 }
  //                 return text ? (
  //                     <TreeSelect
  //                         bordered={false}
  //                         loading={mapLoading}
  //                         placeholder="请选择"
  //                         treeData={assetAreaList}
  //                         fieldNames={{
  //                             label: 'name',
  //                             value: 'id',
  //                             children: 'children',
  //                         }}
  //                         value={text}
  //                         style={{ width: '100%' }}
  //                         showSearch={true}
  //                         treeNodeFilterProp={'name'}
  //                         allowClear={true}
  //                         disabled={true}
  //                     />
  //                 ) : (
  //                     '--'
  //                 );
  //             },
  //         },
  //         {
  //             title: '详细地点',
  //             dataIndex: 'locationInfo',
  //             key: 'locationInfo',
  //             width: 180,
  //             visible: false,
  //             fixed: 'right',
  //             render: (text: string, record: Record<string, any>) => {
  //                 return (
  //                     <Tooltip title={text}>
  //                         <div className={pageStyles['over-flow-hidden']}>{text || '--'}</div>
  //                     </Tooltip>
  //                 );
  //             },
  //         },
  //         {
  //             title: '领用数量',
  //             dataIndex: 'quantityOrArea',
  //             key: 'quantityOrArea',
  //             width: 130,
  //             fixed: 'right',
  //             sorter: (a: any, b: any) => tableSorter(a, b, 'quantityOrArea'),
  //             render: (text: string | number, record: Record<string, any>) => {
  //                 return (
  //                     <Tooltip title={text}>
  //                         <div className={pageStyles['over-flow-hidden']}>{text || '--'}</div>
  //                     </Tooltip>
  //                 );
  //             },
  //         },
  //     );
  // }

  if (editState || finish) {
    // columnConfig.push({
    //   title: '分配资产',
    //   dataIndex: 'assetIds',
    //   key: 'assetIds',
    //   width: 160,
    //   fixed: 'right',
    //   render: (text: any, record: Record<string, any>, index: number) => {
    //     return (
    //       <>
    //         <div style={{ width: 150, overflowY: 'scroll' }}>
    //           <div style={{ width: 110 }} className={pageStyles['over-flow-hidden']}>
    //             {text && Object.keys(text).length !== 0
    //               ? Object.keys(text).map((item: any, idx: number) => {
    //                   return (
    //                     <Tooltip title={text[item]} key={idx}>
    //                       <div key={idx} className={pageStyles['over-flow-hidden']}>
    //                         <a
    //                           onClick={() => {
    //                             history.push({
    //                               pathname: `/assetInfo/detail/:${getKeyRouter()}${getKeyRouter()}`,
    //                               state: {
    //                                 pageType: 'hidden',
    //                                 id: item,
    //                                 returnPathName: history.location.pathname,
    //                               },
    //                             });
    //                           }}
    //                         >
    //                           {text[item]}
    //                         </a>
    //                       </div>
    //                     </Tooltip>
    //                   );
    //                 })
    //               : '--'}
    //           </div>
    //           {!finish && (
    //             <span style={{ float: 'right' }}>
    //               <a>
    //                 <SearchOutlined
    //                   onClick={() => {
    //                     changeEditAssetId(record.materialOrAssetId, index, text);
    //                     openAssetModalFun();
    //                   }}
    //                 />
    //               </a>
    //             </span>
    //           )}
    //         </div>
    //       </>
    //     );
    //   },
    // });
  }

  // if (!isDetail && !editState) {
  //     columnConfig.push({
  //         title: (
  //             <div style={{ width: '100%', textAlign: 'center' }}>
  //                 <Button type="link" size="small" onClick={openAssetModalFun} icon={<AppstoreAddOutlined />} className="manageBtntTxtStyle" onMouseOut={onMouseOutBtn}>
  //                     选择
  //                 </Button>
  //             </div>
  //         ),
  //         dataIndex: 'operation',
  //         key: 'operation',
  //         width: 80,
  //         unDrag: true,
  //         fixed: 'right',
  //         render: (_: string, record: Record<string, any>) => {
  //             return (
  //                 <div className="counterpoartDelBtnStyle">
  //                     <Button
  //                         onClick={() => {
  //                             delSelectRow(record);
  //                         }}
  //                         disabled={pageType == 'view'}
  //                         type={'link'}
  //                         size={'small'}
  //                         icon={<DeleteOutlined />}
  //                         className={'manageBtntTxtStyle'}
  //                     >
  //                         删除
  //                     </Button>
  //                 </div>
  //             );
  //         },
  //     });
  // }

  return columnConfig;
};
